約 2,857,308 件
https://w.atwiki.jp/teematsu/pages/35.html
参考になるサイト ファイルダブルクリック時に新しいウィンドウで開く テンプレート シート追加時のテンプレート Excel関数 データ型 文字列 マクロ ユーザ定義関数の作成 基本構文 演算子 比較 文字列結合 論理 Rangeについて Excelのセルで使える標準関数をマクロから利用する 範囲に名前をつける 変化があったときに何かする 16進数文字列に変換 意図的にエラーを発生させる VBA 関数 文字列 参考になるサイト Excel 2003 関数リファレンス Access VBA講座 ファイルダブルクリック時に新しいウィンドウで開く ファイルの種類の設定で、XLSに対し、新しいアクション(「新規ウィンドウで開く」など)を定義する。 アクションを実行するアプリケーションとして、 "(EXCEL.EXEがあるフォルダ)\EXCEL.EXE" "%1" を指定する。 http //www.trickpalace.net/windows/tips/excel.open.window.htm テンプレート シート追加時のテンプレート シート数1のExcelファイルをテンプレート(*.xlt)として以下のフォルダに保存。 C \ os \Profiles\ User_name \Application Data\Microsoft\Templates Excel関数 データ型 ISNUMBER ISERROR (#VALUE!などのエラーの場合はTRUE) 文字列 SEARCH, FIND (文字列の出現位置を検索。見つからない場合は#VALUE!) マクロ ユーザ定義関数の作成 [ツール]-[マクロ]-[Visual Basic Editor] エディタが開く [挿入]-[標準モジュール] 関数定義は Function foo(param1, param2 As Range, param3 As String) foo = 返却値 End Function セルの値は、計算の入力となるセルの値が変われば自動計算されるが、 「入力となるセル」は、セルに記入した式の中に直接登場するセルとなる。 ユーザ定義関数から直接Range("A2")のようにセルを参照すると、 A2が変化しても自動計算はされない。 自動計算されるようにするには、ユーザ定義関数の引数として、セルの参照 (Range)を受け取るようにする。 Excel のユーザー定義関数の制限について 基本構文 Dim 変数名 As 型 変数名 = 式 Set 変数名 = 式 (オブジェクトを代入する場合) コメント If 式 Then End If For i=0 to 10 Next For Each 変数名 in なんとか Next Exit For (Cのbreak) Exit Function (Cのreturn) 演算子 比較 = 文字列結合 + 結合 オペランドが数値に解釈できる場合は数値演算となるっぽい 結合 論理 and or Rangeについて どれもRangeが取得できる Range("A1") Range("sheet!A1 B4") Cells(y,x) range.Rows http //www.ne.jp/asahi/hishidama/home/tech/excel/range.html Excelのセルで使える標準関数をマクロから利用する WorksheetFunction.関数名(引数,引数,...) 範囲に名前をつける 範囲を選択して名前ボックス(画面左上)に名前を入れる。 名前ボックスの下矢印で、定義済み名前一覧を参照できる。 範囲を変更する、削除するには、[挿入]-[名前]-[定義] A2 B4のような記述の変わりに、名前を使用できる。 =SUM(hogehoge) 変化があったときに何かする 条件付き書式で4つ以上の条件を指定-Worksheet_Changeイベントプロシージャ http //www.relief.jp/itnote/archives/002293.php 16進数文字列に変換 Function tohex(val) tohex = Hex(val) End Function 意図的にエラーを発生させる Err.raise (詳細はヘルプ参照) Err.Raise Number =513, Description ="サブタイトルの列が見つかりません。" VBA 関数 文字列 Format数値、日付、文字列の書式変換 Replace文字列置き換え 名前 コメント
https://w.atwiki.jp/ehatoovo/pages/24.html
かんたんExcel接続 Excelデータのテーブル名指定方法 Excelデータ取得時のエラー別対処方法1 つ以上の必要なパラメーターの値が設定されていません。 BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 抽出条件でデータ型が一致しません。「標準」 「文字列」 「数値」 メモリ不足です。 リンクされている Excel のワークシートを表示するための接続が切断されました。 かんたんExcel接続 ADOを使ってマクロのブック自身に接続する場合、ThisWorkbookモジュールのプロパティに接続文字列を書いておく。 [ThisWorkbook] Property Get ConnectionString() ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0;" _ "Data Source=" ThisWorkbook.FullName ";" _ "Extended Properties=""Excel 8.0;HDR=YES;""" End Property 接続したいときに1行で呼べてかっこいい(だからなんだ) [どこかのモジュール] Sub hoge() Dim conn As New ADODB.Connection conn.Open ThisWorkbook.ConnectionString End Sub ちなみにWin7 32bit Excel2003環境では上記プロパイダで接続しようとすると以下のエラーになる。 実行時エラー 3706 プロバイダーが見つかりません。正しくインストールされていない可能性があります。 Providerを"Microsoft.Jet.OLEDB.4.0"に差し替えると動いた。 Excelデータのテーブル名指定方法 Excelのデータへのアクセス方法。名前の有無でテーブル名の設定内容が変わる。 シート名とセルアドレスを直接指定して接続する場合の書き方。 rs.Open "SELECT * FROM [シート名$A1 C5]", conn A1セルから始まるデータを持つシートの場合、シート名のみでアクセス可能。 rs.Open "SELECT * FROM [シート名$]", conn ブックレベルの名前付きセル範囲にアクセスする場合、"シート名$"の記述は不要。というかシート名があるとエラーになる。 rs.Open "SELECT * FROM [名前付きセル範囲]", conn シートレベルの名前付きセル範囲にアクセスする場合は"シート名$"の記述が必要。 rs.Open "SELECT * FROM [シート名$名前付きセル範囲]", conn 可変長の名前付きセル範囲を直接指定してアクセスすることは不可能。(実行時エラーが発生する) rs.Open "SELECT * FROM [可変長の名前付きセル範囲]", conn 実行時エラー -2147217865 (80040e37) オブジェクト 可変長の名前付きセル範囲 が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。 ★可変長の名前付きセル範囲にアクセスするためには セル範囲をテーブル名に変換するヘルパー関数を使用する。 rs.Open "SELECT * FROM " ToTableName(Range("可変長の名前付きセル範囲")) セル範囲を"[シート名$セルアドレス(A1形式)]"に変換するヘルパー関数 Function ToExcelTableName(ByVal rng As Range) As String ToExcelTableName = "[" rng.Parent.Name "$" rng.Address(False, False) "]" End Function このヘルパー関数は、可変長の名前付きセル範囲に限らずどんなセル範囲でもテーブル名に変換できるので便利。 Excelデータ取得時のエラー別対処方法 ADODB.RecordsetでExcelのデータを取ろうとしたらエラーになるんですけどぉー!? という場合のエラーメッセージ別対処方法。 Win7 32bit Excel2003環境にて確認。 1 つ以上の必要なパラメーターの値が設定されていません。 実行時エラー -2147217904 (80040e10) 1 つ以上の必要なパラメーターの値が設定されていません。 →SQLのSELECT,WHERE,ORDER BY等に渡すフィールドの名前が間違っている可能性がある。 BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 実行時エラー 3021 BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 →何だかよく分からないがフィールド名に"No"を使っていてWhere条件で"No"を指定するとこのエラーがでる。 予約語?"Yes"ではエラーにならなかった。 抽出条件でデータ型が一致しません。 実行時エラー -2147217913 (80040e07) 抽出条件でデータ型が一致しません。 →SQLのWHERE条件に指定したフィールドのセルの分類によりこのエラーが発生する場合がある。 「標準」 そのデータが数値であれば、フィールド名=1と指定しなければならない。 もしデータが数値以外の文字列であれば、フィールド名= ABC と で括って指定する。 「文字列」 データが数値であってもフィールド名= 1 と指定すること。 「数値」 調査中…。 メモリ不足です。 実行時エラー -2147467259 (80004005) メモリ不足です。 →FROM句に指定したセル範囲に、全く、何も値が入っていない場合このエラーが発生する可能性がある。 リンクされている Excel のワークシートを表示するための接続が切断されました。 実行時エラー -2147467259 (80004005) リンクされている Excel のワークシートを表示するための接続が切断されました。 →この記事を書くために実験しまくっていたらこのエラーが出るようになってしまった。 実験内容はFROM句に指定したセル範囲のフィールド名が空だったらどうなるかというもの。 このエラーメッセージが出るとどんなに正しいSQLで接続してもこのエラーを出すようになってしまう。ひどい。 対処法としてはExcelファイルを新しく作り直すことぐらい。 今まで見たことがないので普通に正しくADODBを使っていれば大丈夫…と思う。
https://w.atwiki.jp/wordexcel/pages/14.html
Excelのページです。
https://w.atwiki.jp/nkym_memo/pages/188.html
ショートカット http //www.relief.jp/itnote/archives/000099.php Tips オブジェクト(図形など)の全選択 日本語入力をOffにして、オブジェクトを選択 → Ctrl + Shift + Space 行や列の入れ替え 入れ替えたい範囲をコピー Shiftを押しながら所望の位置へドラッグ&ドロップ http //trendy.nikkeibp.co.jp/article/tec/excel2/20060904/118455/ 1つのセル内に文字と数式を含める 「=数式 "文字列" ....」と記入 =vlookup(C12 C34) "と"C12 "あれ" シート名を一覧にして取得 VBAを使う For Each i In ThisWorkbook.Sheets debug.print i.name next i http //blogs.wankuma.com/yaju/archive/2011/04/15/198441.aspx エラー対策 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ない Excelのバージョン(拡張子.xls, .xlsx)を揃える http //www.officelabo.net/excel_qa/qa60.html VLOOKUPの結果が違う 最後の引数をFALSE(完全一致)にする http //oshiete.goo.ne.jp/qa/4903009.html リンクの解除ができない 新規Excelファイル作成 リンク元を作成したファイルに設定 シートを作成したファイルにコピー http //okwave.jp/qa/q1042286.html アウトライン設定(データのグループ化と展開)ができない 複数のシートが選択状態になっている http //www.excel.studio-kazu.jp/kw/20070704123406.html
https://w.atwiki.jp/hitkik/pages/83.html
現在のアクティブセルの位置を調べる。 y = ActiveCell.Row x = ActiveCell.Column Cells(y, x)でセルの位置を指定する。代入可能。 Cells(y, x).Interior.ColorIndex = 6色の変更 Cells(y, x).Interior.Pattern = xlUpパターンの変更 Cells(y, x).Interior.PatternColorIndex = xlAutomaticパターン色の変更 この値は、マクロを記録してVBAで見るのが簡単。 選択しているセルの範囲を返す Selection.Address ファイルを開くダイアログボックス Application.Dialogs(xlDialogOpen).Show ("ディレクトリパス") Excel VBA sample2 全部のワークシートにページ設定し印刷実行 sub 印刷実行() dim w as worksheet for each w in worksheets if w.name "do not print" then with w.pagesetup .zoom=false .centerfooter=" P/ N page" .fittopageswide=1 end with end if next worksheets.printpreview end sub http //www.geocities.co.jp/HeartLand-Kaede/9186/loan013.html#b 元利均等計算 Excelに用意されている以下の財務ワークシート関数を使用して算出しています。 返済額・融資金額に関してはボーナス併用をサポートしていますが、ボーナス分は無条件に6ヶ月間隔、初回ボーナス返済までの月数6ヶ月として計算されます。 ①返済額 = PMT(金利, 期間, 融資金額) 小数点以下は切り捨てます。 ②融資金額 = PV(返済額、金利、返済期間) 小数点以下は切り捨てます。 ③返済期間 = NPER(融資金額、毎月返済額、金利) 小数点第3位以下は切り捨てます。 ④金利 = RATE(融資金額、毎月返済額、返済期間) 小数点第6位以下は切り捨てます。 なお、③、④は毎月返済額をもとに計算しますので、ボーナス分の金額を入力しても無視します。 ボーナス分の金額で算出したい場合は、概算としてボーナス分融資金額は毎月分融資金額の概ね半分、ボーナス分返済金額は概ねボーナス分返済額の概ね6倍の金額として算出してみてください。
https://w.atwiki.jp/javadsge/pages/9770.html
Sub test() Cells(1, 1).Value = "EXCEL VBA" For i = 1 To 5 Cells(i, 1).Value = "EXCEL VBA" Next End Sub
https://w.atwiki.jp/microsoftexcelmatome/pages/16.html
Excelとは結局なんなのか 方眼紙 emacs/vimライクなエディタ VBAで自動化できる環境 DB連携もできるフォーム つまりExcelを完全に使いこなせばAccessは不要。
https://w.atwiki.jp/notfound404/pages/4.html
[Excel][VBA]全シートのリンクを作りたい シート名が大量にあって、目次を作るとかでシート名を取得すると同時にリンクを貼りたい場合。 Public Function GetHyperLinkString() Dim i As Integer For i = 1 To Worksheets.Count =HYPERLINK( # シート名 !A1 , シート名 ) ← こういう形の文字列を取得 Debug.Print =HYPERLINK( Chr(34) # Worksheets(i).Name !A1 ; Chr(34) , Chr(34) Worksheets(i).Name Chr(34) ) Next i イミディエイトウィンドウに出たテキストをエクセルのセルにコピればOK End Function
https://w.atwiki.jp/wasururu/pages/13.html
Excel VBA
https://w.atwiki.jp/ehatoovo/pages/14.html
ExcelVBAで7行プログラミングだ! 結論:無理 自作してそれなりに使っているマクロを置いていく予定。 かんたん表作成 全シートのカーソルをA1に設定する かんたん表作成 選択しているセル範囲の1行目をヘッダー行、2行目以降をデータ行としてテーブルの見栄えを設定する。 Public Sub かんたん表作成() With Selection.Resize(1) ヘッダ行の設定 .Borders.LineStyle = xlContinuous .Interior.Color = 16764057 End With If Selection.Rows.Count = 1 Then Exit Sub ヘッダ行しかない場合処理を抜ける With Selection.Offset(1).Resize(Selection.Rows.Count - 1) データ行の設定 .Borders.LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlHairline End With End Sub 全シートのカーソルをA1に設定する セルA1指定、スクロールバーを左上に設定、倍率を100%に設定する。 Public Sub A1設定() 各シートの選択セルとスクロール位置と倍率を統一する Dim ws As Worksheet On Error Resume Next 非表示シートをSelectするとエラーになるので無視する For Each ws In ActiveWorkbook.Worksheets ws.Select ws.Cells(1, 1).Activate ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 ActiveWindow.Zoom = 100 Next ActiveWorkbook.Worksheets(1).Select End Sub